package com.sicheng.lc.周赛.分类.思维.数论;

/**
 * @author zsc
 * @version 1.0
 * @date 2022/6/16 15:09
 */
public class 移除指定数字得到最大结果 {
    //    此题我觉得不是很简单，也可能我想复杂辽吧
    //    https://leetcode.cn/problems/remove-digit-from-number-to-maximize-result/
    public String removeDigit(String number, char digit) {

        // 大致思路 遇到的第一个和下一个数字呈上升的digit就是的,找不到就删除最后一个下降的
        // 因为 如果number[i]==digit && number[i]<number[i+1]
        // n位数变成n-1位数==> 删掉number[i],接替number[i]的不会让其更小
        int max = (int) 10e7;
        // 第一个上升趋势的digit索引位置
        int last0 = max;
        // 最后一个下降趋势的digit索引位置
        int last1 = -1;
        for (int i = 0; i < number.length() - 1; i++) {
            if (number.charAt(i) == digit) {
                if (number.charAt(i) < number.charAt(i + 1)) {
                    last0 = Math.min(last0, i);
                    break;
                } else {
                    last1 = Math.max(last1, i);
                }
            }
        }
        int res;

        if (last0 != max) {
            res = last0;
        } else if (last1 != -1) {
            res = number.charAt(number.length() - 1) == digit ? number.length() - 1 : last1;
        } else {
            res = number.length() - 1;
        }


        return number.substring(0, res) + number.substring(res + 1);
    }

    public static void main(String[] args) {
        移除指定数字得到最大结果 solution = new 移除指定数字得到最大结果();
        System.out.println(solution.removeDigit("1231", '1'));
    }
}
